home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / GFXFX2.ZIP / SPRITES3.PAS < prev    next >
Pascal/Delphi Source File  |  1995-02-14  |  2KB  |  61 lines

  1.  
  2. program testsprites; { SPRITES3.PAS }
  3. { Sprites demo, version 3, by Bas van Gaalen }
  4. uses u_vga,u_pal,u_kb;
  5.  
  6. const
  7.   nofsprites=200;
  8.   spr:array[0..3*3-1] of byte=(1,1,1,1,3,2,1,2,2);
  9.  
  10. var
  11.   stab1,stab2:array[0..255] of integer;
  12.   virscr,bckscr:pointer;
  13.  
  14. procedure createsprite(nr:byte);
  15. begin
  16.   with sprite[nr] do begin
  17.     xpos:=0; ypos:=0;
  18.     xsize:=3; ysize:=3;
  19.     buf:=@spr;
  20.     seethru:=-1;
  21.     transparant:=false;
  22.   end;
  23. end;
  24.  
  25. var idxarr1,idxarr2:array[1..maxsprites] of byte; i,j:integer;
  26. begin
  27.   setvideo($13);
  28.   setrgb(2,20,30,20); setrgb(3,30,40,30); setrgb(1,40,50,40);
  29.   for i:=4 to 250 do setrgb(i,5+i div 5,10+i div 6,i div 4);
  30.   for i:=1 to nofsprites do begin
  31.     createsprite(i);
  32.     idxarr1[i]:=i*3; idxarr2[i]:=60-i*4;
  33.   end;
  34.   for i:=0 to 255 do begin
  35.     stab1[i]:=round(sin(i*2*pi/255)*100)+100;
  36.     stab2[i]:=round(cos(i*2*pi/255)*50)+50;
  37.   end;
  38.   getmem(virscr,64000); cls(virscr,64000);
  39.   getmem(bckscr,64000); cls(bckscr,64000);
  40.   for i:=0 to 319 do for j:=0 to 199 do
  41.     mem[seg(bckscr^):j*320+i]:=4+abs(i-j-60) mod 250;
  42.   flip(bckscr,virscr,64000);
  43.   destenation:=virscr;
  44.   {u_border:=true;}
  45.   repeat
  46.     for i:=1 to nofsprites do begin
  47.       movesprabs(i,10+stab1[idxarr1[i]]+stab2[idxarr2[i]],20+(stab2[idxarr1[i]]+stab1[idxarr2[i]]) shr 1);
  48.       inc(idxarr1[i],2); inc(idxarr2[i],1);
  49.     end;
  50.     vretrace;
  51.     setborder(1);
  52.     for i:=1 to nofsprites do putback(bckscr,virscr,i);
  53.     for i:=1 to nofsprites do putsprite(i);
  54.     setborder(0);
  55.     flip(virscr,vidptr,64000);
  56.   until keypressed;
  57.   freemem(virscr,64000); freemem(bckscr,64000);
  58.   clearkeybuf;
  59.   setvideo(u_lm);
  60. end.
  61.